【iOSDC Japan 2023 レポート】「TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて」を聞いてきた。
はじめに
年に一度のiOSエンジニアの為のお祭り iOSDC Japan 2023に参加しています。
せっかくなので、参加したセッションのレポートを書きたいと思います。
TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて
登壇者
- niwさん
概要
iOS は一見、テキスト入力や表示のような基本的実装はとても簡単に思えますが、実際には一度はその動作に頭を悩ましたことがあるでしょう。
iOSDC 2020 では「iOS のキーボードと文字入力のすべて」と題してこれらの問題について詳細に検討しました。
そして、この3年間で iOS は大きく変化し、SwiftUI が広く使われるようになり、全く新しいAPI、TextKit 2 が登場しました。
TextKit 2 は大きく変化しおり、互換性に関して注意すべき点が多くあります。
このセッションでは、過去の事例と比較して、多くのユーザが使う iOS アプリにおけるリッチテキストの実装などを踏まえて、キーボードの挙動や SwiftUI、そして TextKit 2 によって変わったテキスト処理について実装例を用いて検討していきます。
対象とする方: iOS アプリ開発の経験がある中・上級者
引用: fortee
資料
感想
スピーカーの方は、2020年のiOSDCでもiOS のキーボードと文字入力のすべてという題材で登壇しており、
今回はその続編として、「iOSのテキスト表示の全て」という内容でした。
これまでTextKit
を使ったことが(多分)なく、実装する時にとてもためになるお話を聞けました。
TextKit1時代では、グラフ単位の操作ができていたが、TextKit2ではグラフ単位での操作ができなくなり、行単位で操作する。
TextKit2では、文字列の中に任意のUIView
を埋め込むことができる。これはとても便利そうですね。ただ、文字列として保持するため埋め込んだリソースがメモリーリークを起こさないように実装する必要があるとのこと。
また、iOS 16ではtypographicBoundsにバグがある為、ワークアラウンドを行う必要があるやTextKit2は下位互換性を高める為、TextKit 1のAPIにちょっとでも触ってしまうと、TextKit 1に切り替わってしまう挙動の為、実装側での対応が必要などの実装時にハマるとつまりそうな箇所の共有していただけました。
現状、SwiftUIのText
, TextEditor
では、TextKit
は使えない為、使用したい場合は、UITextView
を埋め込むしかないとのこと。
普段触らない面白い文字入力の世界の話が聞けてとても勉強になりました。
おわりに
触りたいな TextKit